Function rotate(sWord As String, iTurn As Integer, Optional bTurn As Boolean = False)
Dim sTemp       As String
Dim sRolled     As String
Dim i           As Integer

If bTurn = True Then GoTo decrypt

newone:

If Not i = iTurn Then
    For p = 1 To Len(sWord)
        
        If p = (Len(sWord)) Then
            sTemp = Mid(sWord, 1, 1)
            sRolled = sRolled & sTemp
            i = i + 1
            sWord = ""
            sWord = sRolled
            sRolled = ""
            GoTo newone
        End If
        
        sTemp = Mid(sWord, Len(sWord) - (Len(sWord) - (p + 1)), 1)
        sRolled = sRolled & sTemp
    
    Next
End If

rotate = sWord
Exit Function

decrypt:

newround:

If Not i = iTurn Then
    For p = 1 To Len(sWord)
        
        If p = 1 Then
            sTemp = Mid(sWord, Len(sWord), 1)
            sRolled = sRolled & sTemp
        End If
        
        If p = Len(sWord) Then
        i = i + 1
        sWord = sRolled
        sRolled = ""
        GoTo newround
        End If
        
        sTemp = Mid(sWord, p, 1)
        sRolled = sRolled & sTemp
    
    Next
    
    i = i + 1
    GoTo newround
    
End If

rotate = sWord

End Function



Right Turn: rotate("my string", 1 , TRUE ) 
Left Turn : rotate("my string", 1) 
'The 1 is the number of turns you want to make with that string